package q828_uniqueLetterString;

import java.util.Arrays;

public class Solution_2 {
    /*
    实际上逻辑和solution1是一致的
     */
    public int uniqueLetterString(String s) {
        StringBuilder sb = new StringBuilder();
        char c[] = s.toCharArray();
        int idx[] = new int[26]; // 记录每个字母上一次出现的位置
        int d[] = new int[26]; // 记录每一个字母上一次和上上次出现的位置的差
        Arrays.fill(idx, -1);
        int ans = 0;
        for (int i = 0; i < c.length; i++) {
            int a = c[i] - 'A';
            ans += d[a] * (i - idx[a]);
            d[a] = i - idx[a];
            idx[a] = i;
        }
        for (int i = 0; i < 26; i++) {
            ans += d[i] * (c.length - idx[i]);
        }
        return ans;
    }
}
